package edu.northwestern.cbits.purple_robot_manager.logging; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.support.v4.content.ContextCompat; import edu.northwestern.cbits.purple_robot_manager.R; import edu.northwestern.cbits.purple_robot_manager.activities.PermissionsActivity; public class PermissionsCheck extends SanityCheck { public String name(Context context) { return context.getString(R.string.name_sanity_permissions); } public Runnable getAction(final Context context) { Runnable r = new Runnable() { @Override public void run() { Intent intent = new Intent(context, PermissionsActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } }; return r; } public void runCheck(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { boolean missing = false; String[] required = context.getResources().getStringArray(R.array.required_permissions); for (String permission : required) { if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) missing = true; } if (missing) { this._errorLevel = SanityCheck.ERROR; this._errorMessage = context.getString(R.string.name_sanity_permission_error); } else this._errorLevel = SanityCheck.OK; } else this._errorLevel = SanityCheck.OK; } }